package com.stx.crazy.dao.impl;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

import com.stx.crazy.dao.UserDao;
import com.stx.crazy.entity.User;

/**
 * 用户数据访问对象类(jdbc)
 * 
 * @author getan
 * 
 */
public class UserDaoImpl implements UserDao {
	/**
	 * 根据查询条件查询用户信息列表
	 * 
	 * @param stuPO
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings("unused")
	private JdbcTemplate jdbcTemplate;

	public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
		this.jdbcTemplate = jdbcTemplate;
	}

	public List<User> queryUser(User userParams) throws Exception {
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * 新增用户信息
	 * 
	 * @param user
	 * @throws Exception
	 */
	public void insertUser(User user) throws Exception {
		String sql="insert into pro_user(us_id,us_loginName,us_passWord,us_nickName,us_img,us_type) values(us_id.nextval,?,?,?,?,?)";
		
		Object[] params={ user.getUs_loginName(),user.getUs_passWord(),user.getUs_nickName(),user.getUs_img(),user.getUs_type() };
		
		jdbcTemplate.update(sql, params);
	}

	/**
	 * 根据登录名和密码查询用户（判断登录名与密码是否匹配合法）
	 * 
	 * @param loginName
	 * @param password
	 * @return 用户对象
	 * @throws Exception
	 */
	public User getUserByLoginNameAndPassword(String us_loginName,
			String us_passWord) throws Exception {

		// sql语句
		String sql = "select * from pro_user where us_loginName = ? and us_passWord = ?";
		// 参数列表
		Object[] params = { us_loginName, us_passWord };
		// 返回查询结果集合
		List<User> userList = jdbcTemplate.query(sql, params, new UserRowMapper());

		// 判断结果集合是否为空(用户名密码是否匹配)
		if (!userList.isEmpty()) {
			// 匹配
			return (User) userList.get(0);
		} else {
			// 不匹配
			return null;
		}
		

	}

	/**
	 * 删除用户信息
	 * 
	 * @param sno
	 */
	public void deleteUser(String sno) {
		// TODO Auto-generated method stub
	}

	/**
	 * 更新用户信息
	 * 
	 * @param user
	 */
//	更改用户昵称
	public void update(User user) {
		
		String sql="update pro_user set us_nickName=? where us_id=?";
	
		Object[] params={user.getUs_id(),user.getUs_nickName()};
	
		jdbcTemplate.update(sql, params);
	}
//	更改用户密码的方法
	public void updatePassWord(User user) {
		
		String sql="update pro_user set us_nickName=?,us_img=? where us_id=?";
	
		Object[] params={user.getUs_id(),user.getUs_nickName(),user.getUs_passWord(),user.getUs_img()};
	
		jdbcTemplate.update(sql, params);
	}
	private class UserRowMapper implements RowMapper {
		@Override
		public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
			User user = new User();
			// ResultSet对象=>对象 映射操作开始
			user.setUs_id(rs.getString("us_id"));
			user.setUs_img(rs.getString("us_img"));
			user.setUs_loginName(rs.getString("us_loginName"));
			user.setUs_nickName(rs.getString("us_nickName"));
			user.setUs_passWord(rs.getString("us_passWord"));
			user.setUs_type(rs.getString("us_type"));
			// ResultSet对象=>对象 映射操作结束

			// 返回映射后的用户对象
			return user;
		}
	
	}
}
